[小ネタ] Gitのコマンド実行に失敗した時に目立つメッセージを表示する
先日Gitでrebaseをしたつもりがされていないという事故が起きました。 話を聞いたところ、「明らかにrebaseのコマンドは打ったが、エラーメッセージをスルーしていてrebaseできてなかった」という状況でした。
たしかにGitでコマンドの実行に失敗した時のエラーメッセージはわりとさっぱりしている気がします。
$ git rebase develop Cannot rebase: You have unstaged changes. Please commit or stash them.
もっと「失敗した!」感が強いメッセージが表示されれば事故を防げるのかな、と思いましたので、Gitのエイリアスを利用してGitのコマンド実行に失敗した時に目立つメッセージを表示するように設定してみます。
また、試した際の環境は以下です。
- OS: macOS Sierra 10.12.6(16G29)
- Git: git version 2.11.0 (Apple Git-81)
ターミナルはiTerm(Build 3.0.15)とmacOS標準のターミナル(バージョン2.7.3)で動作確認しました。
やってみる
今回は文字列のエスケープがややこしいので、設定ファイルを直接編集します。
$ vi ~/.gitconfig
[alias]に以下を設定します。
[alias] rbg = !sh -c 'git rebase $@ || (echo "_人人人人_" && echo "> だめ <" && echo " ̄Y^Y^Y ̄")' -
rbgコマンドが、rebaseしてもし失敗したらメッセージを表示する、というコマンドとして定義できました。
実際にrebaseに失敗してみます。
$ git rbg xxxxbranch fatal: Needed a single revision invalid upstream xxxxbranch _人人人人_ > だめ <  ̄Y^Y^Y ̄
派手なメッセージが出ました。
もっと派手にしてみる
以下の設定でメッセージに色がつきます。
[alias] rbg = !sh -c 'git rebase $@ || (printf "\\\\e[31m%s\\\\n%s\\\\n%s\\\\n\\\\e[m" "_人人人人_" "> だめ <" " ̄Y^Y^Y ̄")' -
実際にrebaseに失敗すると以下の様になります。
これで見逃さずに済みそうです。
最後に
メッセージを追加で出力できるので、Gitの外につながる次のフローへのリマインドなどに使うと便利なのではないかと思います。
参考資料
Aliases - Git SCM Wiki
Git - Git Aliases
【Git】Tips: Gitのエイリアスを使う
ターミナルのechoやprintfに256色で色をつける 完全版